const departmentService = require('../../services/department')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    departments: [],
    loading: true,
    error: null,
    page: 1,
    size: 20,
    hasMore: true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getDepartmentList()
  },

  /**
   * 获取科室列表
   */
  getDepartmentList(append = false) {
    this.setData({ loading: true })
    
    departmentService.getDepartmentList(this.data.page, this.data.size)
      .then(res => {
        console.log('科室列表处理:', res)
        // 保存原始数据，用于调试
        this.setData({ rawResponse: JSON.stringify(res, null, 2) })
        
        // 兼容不同的返回结构，但优先采用直接返回的数据结构
        let records = [], total = 0
        
        // 直接使用返回的数据
        // 情况1：返回分页对象
        if (res && res.records) {
          records = res.records
          total = res.total || 0
          console.log('使用分页对象解析数据')
        }
        // 情况2：直接返回数组
        else if (Array.isArray(res)) {
          records = res
          total = res.length
          console.log('使用数组解析数据')
        }
        // 情况3：没有数据
        else {
          console.log('没有查询到科室数据')
        }
        
        console.log('提取的记录:', records, '总数:', total)
        const hasMore = this.data.page * this.data.size < total
        
        if (append) {
          this.setData({
            departments: [...this.data.departments, ...records],
            loading: false,
            hasMore
          })
        } else {
          this.setData({
            departments: records,
            loading: false,
            hasMore
          })
        }
      })
      .catch(err => {
        console.error('获取科室列表失败:', err)
        this.setData({
          error: '网络错误，请重试：' + err.message,
          loading: false
        })
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        })
      })
  },

  /**
   * 前往科室详情
   */
  navigateToDepartment(e) {
    const id = e.currentTarget.dataset.id
    if (!id) return
    
    wx.navigateTo({
      url: `/pages/department/detail?id=${id}`
    })
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({ page: 1 })
    this.getDepartmentList()
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.hasMore && !this.data.loading) {
      this.setData({ page: this.data.page + 1 })
      this.getDepartmentList(true)
    }
  }
}) 